home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 23.zip / BS1 part 23 / Prof page II util.adf / Data / csep_psprlg next >
Text File  |  1990-12-07  |  6KB  |  249 lines

  1. %=====================================================================%
  2. % Professional Page Color Seperation Prologue file: V2.0, Dec 7, 1990 %
  3. %=====================================================================%
  4. %
  5. % Handles function re-mapping for Color seperation of documents with EPSF files
  6. % with PostScript color commands: 'setrgbcolor, sethsbcolor' as well as
  7. % ColorPostScript commands: `setcmykcolor, currentcmykcolor, colorimage,
  8. % setcolorscreen, currentcolorscreen' + transfer and UCR/GCR commands.
  9.  
  10. % "component" is a global variable which specifies the seperation we're
  11. %  currently doing:  = 0 for B&W black, 1 for black, 2 for y, 3 for m,
  12. %               4 for c, 5 for mechanical (custom) colors
  13. /component 0 def
  14. /subgray true def
  15. /fourcol false def   % used to designate 3 or 4 colour sep.
  16. /setrgb /setrgbcolor load def
  17. /sethsb /sethsbcolor load def
  18. /_setgray /setgray load def
  19. /UCR_fctr 0.5 def
  20. /GCR_fctr 1.0 def
  21.  
  22. %
  23. % setgray
  24. %
  25. /setgray {   % g setgray
  26.    subgray
  27.    {
  28.       component 0 eq component 1 eq or not
  29.       { pop 1.0 }
  30.       if
  31.    }
  32.    if
  33.    _setgray
  34. } bdef
  35.  
  36. %
  37. % Standard PostScript operators:
  38. %
  39.  
  40. % translate rgb into cmyk with 100% UCR/GCR
  41. /setrgbcolor {    % red grn blu setrgbcolor
  42.    % call system setrgbcolor so that currentrgbcolr, currenthsbcolor
  43.    % will still give correct results:
  44.    3 copy setrgb
  45.  
  46.    5 dict begin
  47.  
  48.    1 exch sub /ye exch def
  49.    1 exch sub /ma exch def
  50.    1 exch sub /cy exch def
  51.    /blk 0 def
  52.  
  53.    fourcol { % do 100% UCR/GCR
  54.       /min ye def
  55.       ma min lt {/min ma def} if
  56.       cy min lt {/min cy def} if
  57.       min UCR_fctr mul /blk exch def
  58.  
  59.       ye blk sub /ye exch def
  60.       ma blk sub /ma exch def
  61.       cy blk sub /cy exch def
  62.       min GCR_fctr mul /blk exch def
  63.  
  64.    } if
  65.  
  66.    % get the component that we want:
  67.    component 0 eq {blk 3 mul ma add ye add cy add 3 div} if
  68.    component 1 eq {blk} if
  69.    component 2 eq {ye} if
  70.    component 3 eq {ma} if
  71.    component 4 eq {cy} if
  72.    component 5 eq {0} if
  73.    1 exch sub _setgray
  74.  
  75.    end
  76. } bdef
  77.  
  78. /sethsbcolor {
  79.    sethsb currentrgbcolor setrgbcolor
  80. } bdef
  81.  
  82. %
  83. % Color PostScript operators:
  84. %
  85.  
  86. %/setcmykcolor {  % cy ma ye blk setcmykcolor
  87. %   1 sub 4 1 roll
  88. %   3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat
  89. %   setrgbcolor pop
  90. %} bdef
  91.  
  92. /setcmykcolor {  % cy ma ye blk setcmykcolor
  93.    5 dict begin
  94.  
  95.    /blk exch def
  96.    /ye exch def
  97.    /ma exch def
  98.    /cy exch def
  99.  
  100.    fourcol
  101.    { }
  102.    {
  103.       ye blk add dup 1 gt { pop 1 } if /ye exch def
  104.       ma blk add dup 1 gt { pop 1 } if /ma exch def
  105.       cy blk add dup 1 gt { pop 1 } if /cy exch def
  106.       /blk 0 def
  107.    }
  108.    ifelse
  109.  
  110.    % get the component that we want:
  111.    component 0 eq {blk 3 mul ma add ye add cy add 3 div} if
  112.    component 1 eq {blk} if
  113.    component 2 eq {ye} if
  114.    component 3 eq {ma} if
  115.    component 4 eq {cy} if
  116.    component 5 eq {0} if
  117.    1 exch sub _setgray
  118.  
  119.  
  120.    end
  121. } bdef
  122.  
  123. /currentcmykcolor {
  124.    currentgray dup dup dup
  125. } bdef
  126.  
  127. /setcolorscreen {
  128.    component 0 eq {12 3 roll} if
  129.    component 1 eq {12 3 roll} if
  130.    component 2 eq {12 -6 roll} if
  131.    component 3 eq {12 -3 roll} if
  132.    % component 4 eq {} if
  133.    component 5 eq
  134.    {12 {pop} repeat}
  135.    {9 {pop} repeat setscreen}
  136.    ifelse
  137. } bdef
  138.  
  139. /currentcolorscreen {
  140.    currentscreen 3 copy 3 copy 3 copy
  141. } bdef
  142.  
  143. /setcolortransfer {
  144.    component 0 eq {4 1 roll} if
  145.    component 1 eq {4 1 roll} if
  146.    component 2 eq {4 -2 roll} if
  147.    component 3 eq {4 -1 roll} if
  148.    % component 4 eq {} if
  149.    component 5 eq
  150.    { pop pop pop pop}
  151.    {pop pop pop settransfer}
  152.    ifelse
  153. } bdef
  154.  
  155. /currentcolortransfer {
  156.    currenttransfer dup dup dup
  157. } bdef
  158.  
  159. /setblackgeneration {
  160.    pop
  161. } bdef
  162. /currentblackgeneration {
  163.    {}
  164. } bdef
  165.  
  166. /setundercolorremoval {
  167.    pop
  168. } bdef
  169.  
  170. /currentundercolorremoval {
  171.    {}
  172. } bdef
  173.  
  174. /colorimage { % width height bps matrix proc0 [...procn-1] multi ncol colorimage
  175.    10 dict begin
  176.    /ncol exch def
  177.    /multi exch def
  178.    ncol 4 eq multi and {
  179.       /proc3 exch def
  180.    } if
  181.    ncol 3 ge multi and {
  182.       /proc2 exch def
  183.       /proc1 exch def
  184.    } if
  185.    /proc0 exch def
  186.    /mat exch def
  187.    /bps exch def
  188.    /height exch def
  189.  
  190.    height bps mat
  191.  
  192.    ncol 1 eq
  193.    {    % just B&W data
  194.       component 0 eq component 1 eq or
  195.       {{proc0} image}
  196.       {height {proc0 pop} repeat 4 {pop} repeat}
  197.       ifelse
  198.    }
  199.    {
  200.       multi
  201.       {
  202.      /trsave currenttransfer def
  203.      % CMYK (4 color) is dark-high, `image' wants light-high
  204.      % so invert image:
  205.      ncol 4 eq {{1 exch sub} currenttransfer concatprocs settransfer} if
  206.      component 0 eq component 1 eq or { % B&W or Black component
  207.         ncol 3 eq
  208.         {height {proc0 pop proc1 pop proc2 pop} repeat 4 {pop} repeat}
  209.         {{proc0 pop proc1 pop proc2 pop proc3} image}
  210.         ifelse
  211.      } if
  212.      component 2 eq { % Yellow component
  213.         ncol 3 eq
  214.         {{proc0 pop proc1 pop proc2} image}
  215.         {{proc0 pop proc1 pop proc2 proc3 pop} image}
  216.         ifelse
  217.      } if
  218.      component 3 eq { % Magenta component
  219.         ncol 3 eq
  220.         {{proc0 pop proc1 proc2 pop} image}
  221.         {{proc0 pop proc1 proc2 pop proc3 pop} image}
  222.         ifelse
  223.      } if
  224.      component 4 eq { % Cyan component
  225.         ncol 3 eq
  226.         {{proc0 proc1 pop proc2 pop} image}
  227.         {{proc0 proc1 pop proc2 pop proc3 pop} image}
  228.         ifelse
  229.      } if
  230.      component 5 eq { % Mechanical color
  231.         ncol 3 eq
  232.         {height {proc0 pop proc1 pop proc2 pop} repeat 4 {pop} repeat}
  233.         {height {proc0 pop proc1 pop proc2 pop proc3 pop} repeat 4 {pop} repeat }
  234.         ifelse
  235.      } if
  236.      /trsave load settransfer
  237.       }
  238.       {  % not multiproc - can't do anything
  239.      height {proc0 pop} repeat 4 {pop} repeat
  240.       }
  241.       ifelse
  242.    }
  243.    ifelse
  244.    end
  245. } bdef
  246.  
  247.  
  248.  
  249.